<?php
// +----------------------------------------------------------------------
// | ThinkCrypto
// +----------------------------------------------------------------------
// | 版权所有 2014~2021 青海云音信息技术有限公司 [ http://www.yyinfos.com ]
// +----------------------------------------------------------------------
// | 开源协议 ( https://mit-license.org )
// +----------------------------------------------------------------------
// | gitcode 代码仓库：https://gitcode.net/qhweb/ThinkCrypto
// +----------------------------------------------------------------------

namespace think\crypto\command;

use think\console\Command;
use think\console\Input;
use think\console\input\Argument;
use think\console\input\Option;
use think\console\Output;
use think\crypto\service\Crypto;
class Encode extends Command
{

    public function configure()
    {
        $this->setName('crypto:encode')
            ->addArgument('from', Argument::REQUIRED, '源目录或文件路径（From）')
            ->addArgument('to', Argument::REQUIRED, '目标目录路径（To）')
            ->setDescription('对指定目录/文件进行加密处理，并输出到目标目录');
    }

    public function execute(Input $input, Output $output)
    {
        // 获取参数
        $from = trim($input->getArgument('from'));
        $to   = trim($input->getArgument('to'));

        // 输出接收到的参数（调试用，正式时可删）
        $output->writeln("<info>源路径 (from):</info> " . root_path() .$from);
        $output->writeln("<info>目标路径 (to):</info> " . root_path() .$to);
        
        // 检查源路径
        if (!is_dir($from) && !file_exists($from)) {
            $output->writeln("<error>错误：源路径不存在或不是有效目录/文件</error>");
            return false;
        }

        // 如果目标目录不存在，则尝试创建
        if (!is_dir($to)) {
            if (!mkdir($to, 0755, true)) {
                $output->writeln("<error>错误：无法创建目标目录 {$to}</error>");
                return false;
            }
        }

        // 提示
        $output->writeln("<comment>开始加密处理：从 {$from} 到 {$to}</comment>");
        (new Crypto())->encryptDir($from,$to,$output);
    }

}